﻿<?php
class SendMail {
   var $EmailDe;        //Email de quem está enviando
   var $EmailPara;      //Email de quem vai receber
   var $EmailCopia;      //Email de quem vai receber
   var $EmailCopiaOculta;//Email de quem vai receber
   var $Assunto;        //Assunto do email
   var $Corpo;          //Mensagem do email

   var $Type = "HTML";

   //Aumente para mais anexos
   var $Anexos=array(" ", " ", " ", " ", " ", " "," ", " ", " "," ");
   var $NumAnexos=0;

   var $Barra="\\";     //Variavel que guarda o tipo da barra, \\ - windows | / - Linux
   var $erros=FALSE;    //Variavel que trata a situação da classe

   //Construtor
   function SendMail()
   {
       //Aumenta o tempo de espera maximo
       //set_time_limit(60);
   }

	function setFrom($name, $email){
		$this->EmailDe = $name . "<" . $email . ">";
	}
	function addTo($name, $email){
		$strTemp = $this->EmailPara;
		$strTemp .= (($strTemp == "")?"":",") . $name . "<" . $email . ">";
		$this->EmailPara = $strTemp;
	}
	function addCc($name, $email){
		$strTemp = $this->EmailCopia;
		$strTemp .= (($strTemp == "")?"":",") . $name . "<" . $email . ">";
		$this->EmailCopia = $strTemp;
	}
	function addBcc($name, $email){
		$strTemp = $this->EmailCopiaOculta;
		$strTemp .= (($strTemp == "")?"":",") . $name . "<" . $email . ">";
		$this->EmailCopiaOculta = $strTemp;
	}
	function setSubject($subject){
		$this->Assunto = $subject;
	}
	function setMessage($message){
		$this->Corpo = $message;
	}
	function setType($type){
		$this->Type = $type;
	}

   //Criptografa o arquivo na base64
   function CodarArquivo($arq)
   {
   	   $fp=fopen($arq["tmp_name"], "rb");
       if(!$fp)
       {
           $this->erros=TRUE;
           return FALSE;
       }
       $File=fread($fp, filesize($arq["tmp_name"]));
       fclose($fp);
       return base64_encode($File);
   }
   
    //Retorna o nome do arquivo
    function PegarNome($str)
    {
        return $str["name"];
    }

    //Retorna a extensão do arquivo, desde que ele tenha extesão
    function PegarTipo($str)
    {
        return $str["type"];
    }

    //Coloca o endereço do arquivo no array e aumenta o numero de anexos
    function Attach($arq)
    {
        $this->Anexos[$this->NumAnexos]=$arq;
        $this->NumAnexos++;
        return TRUE;
    }
    
   //Função que verifica se as variaveis estão OK
   function Verificar()
   {
       //Verifica se é um servidor autenticado
       if( $this->Autenticado )
           if( !isset($this->Usuario) || !isset($this->Senha) )  //Se for autenticado, verifica o usuario e a senha
               $this->erros=TRUE;

       //Verifica se o servidor foi digitado
       if( !isset($this->Servidor) )
           $this->erros=TRUE;
           
       //Verifica se os parametros são validos
       if( !isset($this->EmailDe) || !isset($this->EmailPara) || !isset($this->Assunto) || !isset($this->Corpo) )
           $this->erros=TRUE;
   }

	function send(){
		//Envia o cabeçalho
		$header .= "MIME-Version: 1.0\r\n";
		$header .= "From: " . $this->EmailDe . "\r\n";
		$header .= "Cc: " . $this->EmailCopia . "\r\n";
		$header .= "Bcc: " . $this->EmailCopiaOculta . "\r\n";
		$header .= "Content-Type: multipart/mixed;\r\n";
		$header .= "      boundary=KkK170891tpbkKk__FV_KKKkkkjjwq\r\n";
		$header .= "--KkK170891tpbkKk__FV_KKKkkkjjwq\r\n";
		if ( $this->Type == "HTML" ){
			$header .= "Content-type: text/html; charset=iso-8859-1\r\n";
		} else {
			$header .= "Content-Type: text/plain; charset=US-ASCII\r\n";
		}

		$message = $this->Corpo;
		$message .= "\r\n\r\n";

		//verifica se existe arquivo para ser enviado junto
		if ( $this->NumAnexos > 0 ){
			for($i=0; $i<$this->NumAnexos; $i++){
				//Pega o tipo para o MIME TYPE
				$tipo=$this->PegarTipo($this->Anexos[$i]);
				//Pega o nome do arquivo
				$Nome=$this->PegarNome($this->Anexos[$i]);
				$message .= "--KkK170891tpbkKk__FV_KKKkkkjjwq\r\n";
				$message .= "Content-Type: " . $Tipo . "; name=\"". $Nome . "\"\r\n";
				$message .= "Content-Transfer-Encoding: base64\r\n";
				$message .= "Content-Disposition: attachment; filename=\"" . $Nome . "\"\r\n";
				$message .= "\r\n";
				$message .= $this->CodarArquivo($this->Anexos[$i]);
				$message .= "\r\n";
			}
			$message .= "--KkK170891tpbkKk__FV_KKKkkkjjwq--\r\n";
		}
		return mail ( $this->EmailPara, $this->Assunto, $message, $header);
	}
}

/*
 * Exemplo de envio de e-mail.
 */
/*
    $Email = new SendMail;
    
    $Email->setFrom("Classificados Portal", "marcos.zinni@tam.com.br");  //seu email

    $Email->addTo("Marcos Hot","marcos_zinni@hotmail.com");

    $Email->addBcc("MarcosGmail CopiaOculta","marcos.zinni@gmail.com");

    $Email->setSubject("Assunto do email");
    $Email->setMessage("Corpo do email com <strong>HTML</strong>");

    $Email->Attach($_FILES["arquivo"]);   //Anexo 1
    $Email->Attach($_FILES["arquivo1"]);   //Anexo 2 - para mais anexos é só anexar mais =P

    if($Email->send()){           //Envia o email
        echo "Email enviado";
    } else {
        echo "Email não pode ser enviado";
	}
*/
?>
